/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package trocabi.service;

import java.util.ArrayList;
import trocabi.DAO.DAODepositaire;
import trocabi.Parameters;
import trocabi.Socle.TechnicalException;
import trocabi.Socle.StringTools;
import trocabi.model.Depositaire;

/**
 *
 * @author philippe
 */
public class DepositaireServices {
     private DAODepositaire               daoDepositaire = DAODepositaire.getInstance();

     public void create(Depositaire depositaire) throws TechnicalException {
        depositaire.setId(daoDepositaire.insert(depositaire));
     }
     
     public void update(Depositaire depositaire) throws TechnicalException {
        daoDepositaire.update(depositaire);
     }
     
     public Depositaire get(long id) throws TechnicalException  {
         return daoDepositaire.get(id);
     }
     
    public ArrayList<Depositaire> searchDepositaireByName(String nom, String prenom) throws TechnicalException {
        String query;
        
        if (prenom.isEmpty()) { // TODO: use like
            query = String.format("SELECT * FROM %s WHERE %s REGEXP '^%s'",
                    DAODepositaire.TB_DEPOSITAIRE,
                    DAODepositaire.FD_NOM, StringTools.escape(nom));

        } 
        else if (nom.isEmpty()) {
            query = String.format("SELECT * FROM %s WHERE %s = '%s'",
                    DAODepositaire.TB_DEPOSITAIRE,
                    DAODepositaire.FD_PRENOM, StringTools.escape(prenom));
        } 
        else {
            query = String.format("SELECT * FROM %s WHERE %s = '%s' AND %s = '%s'",
                    DAODepositaire.TB_DEPOSITAIRE,
                    DAODepositaire.FD_NOM, StringTools.escape(nom),
                    DAODepositaire.FD_PRENOM, StringTools.escape(prenom));
        }
        return daoDepositaire.search(query);
    }
    
    public String idToString(Depositaire depositaire) {
        return depositaire.getPrenom()+" "+depositaire.getNom()+" n° "+
                        String.format(Parameters.FORMAT_ID_DEPOSITAIRE,depositaire.getId());
    }
}
